package ar.edu.utn.frsf.tpae.a2014.g01.entidad;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@Table(name = "ped")
public class Pedido {

        @Id
        @Column(name = "ped_id")
        @SequenceGenerator(name = "seq_ped", sequenceName = "seq_ped", allocationSize = 1)
        @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_ped")
        private int id;
        
        @Column(name = "ped_dir_org")
        private String origen;
        
        @Column(name = "ped_dir_dst")
        private String destino;
        
        @Column(name = "ped_dsc")
        private String articulo;
        
        @Column( name = "ped_pso")
        private float peso;
        
        @Column( name = "ped_vol")
        private float volumen;
        
        @ManyToOne
        @JoinColumn(name="ped_cli_id")
        private Cliente cliente;

        @ManyToOne
        @JoinColumn(name="ped_adm_id")
        private Administrador administrador;

		@ManyToOne
        @JoinColumn(name="ped_tra_id")
        private Transportista transportista;
 
        private String comentario;

        @OneToMany(mappedBy="pedido")
        private List<HistorialPedido> historiales;	
	
        public Pedido(){
		
	}
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getOrigen() {
		return origen;
	}
	public void setOrigen(String origen) {
		this.origen = origen;
	}
	public String getDestino() {
		return destino;
	}
	public void setDestino(String destino) {
		this.destino = destino;
	}
	public String getArticulo() {
		return articulo;
	}
	public void setArticulo(String articulo) {
		this.articulo = articulo;
	}
	public float getPeso() {
		return peso;
	}
	public void setPeso(float peso) {
		this.peso = peso;
	}
	public float getVolumen() {
		return volumen;
	}
	public void setVolumen(float volumen) {
		this.volumen = volumen;
	}
	public String getComentario() {
		return comentario;
	}
	public void setComentario(String comentario) {
		this.comentario = comentario;
	}
	public List<HistorialPedido> getHistoriales() {
		return historiales;
	}
	public void setHistoriales(List<HistorialPedido> historiales) {
		this.historiales = historiales;
	}
	
	public List<HistorialPedido> addHistoriales(HistorialPedido h1) {
		this.historiales.add(h1);
		return historiales;
	}

	
	public Pedido(int id, String origen, String destino, String articulo,
			float peso, float volumen, String comentario,
			List<HistorialPedido> historiales) {
		super();
		this.id = id;
		this.origen = origen;
		this.destino = destino;
		this.articulo = articulo;
		this.peso = peso;
		this.volumen = volumen;
		this.comentario = comentario;
		this.historiales = historiales;
	}
	@Override
	public String toString() {
		return "Pedido [id=" + id + ", origen=" + origen + ", destino="
				+ destino + ", articulo=" + articulo + ", peso=" + peso
				+ ", volumen=" + volumen + "]";
	}
	public Transportista getTransportista() {
		return transportista;
	}
	public void setTransportista(Transportista transportista) {
		this.transportista = transportista;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	
    public Administrador getAdministrador() {
		return administrador;
	}

	public void setAdministrador(Administrador administrador) {
		this.administrador = administrador;
	}
	
}
